The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.
Changes 05
MANIFEST 10
META.json 11
META.yml 11
Makefile.PL 11
lib/Mason/App.pm 11
lib/Mason/CodeCache.pm 11
lib/Mason/Compilation.pm 22
lib/Mason/Component/ClassMeta.pm 11
lib/Mason/Component/Import.pm 11
lib/Mason/Component/Moose.pm 11
lib/Mason/Component.pm 11
lib/Mason/DynamicFilter.pm 11
lib/Mason/Exceptions.pm 11
lib/Mason/Filters/Standard.pm 11
lib/Mason/Interp.pm 11
lib/Mason/Moose/Role.pm 11
lib/Mason/Moose.pm 11
lib/Mason/Plugin/Defer/Filters.pm 11
lib/Mason/Plugin/Defer/Request.pm 11
lib/Mason/Plugin/Defer.pm 11
lib/Mason/Plugin/DollarDot/Compilation.pm 11
lib/Mason/Plugin/DollarDot.pm 11
lib/Mason/Plugin/LvalueAttributes/Interp.pm 11
lib/Mason/Plugin/LvalueAttributes.pm 11
lib/Mason/Plugin/TidyObjectFiles/Interp.pm 11
lib/Mason/Plugin/TidyObjectFiles.pm 11
lib/Mason/Plugin.pm 11
lib/Mason/PluginBundle/Default.pm 11
lib/Mason/PluginBundle.pm 11
lib/Mason/PluginManager.pm 11
lib/Mason/PluginRole.pm 11
lib/Mason/Request.pm 314
lib/Mason/Result.pm 11
lib/Mason/Test/Class.pm 11
lib/Mason/Test/Overrides/Component/StrictMoose.pm 11
lib/Mason/Test/Plugins/Notify/Compilation.pm 11
lib/Mason/Test/Plugins/Notify/Component.pm 11
lib/Mason/Test/Plugins/Notify/Interp.pm 11
lib/Mason/Test/Plugins/Notify/Request.pm 11
lib/Mason/Test/Plugins/Notify.pm 11
lib/Mason/Tidy.pm 340
lib/Mason/TieHandle.pm 11
lib/Mason/Types.pm 11
lib/Mason/Util.pm 11
lib/Mason/t/Autobase.pm 11
lib/Mason/t/Cache.pm 11
lib/Mason/t/CompCalls.pm 11
lib/Mason/t/Compilation.pm 11
lib/Mason/t/ComponentMeta.pm 11
lib/Mason/t/Defer.pm 11
lib/Mason/t/DollarDot.pm 11
lib/Mason/t/Errors.pm 11
lib/Mason/t/Filters.pm 11
lib/Mason/t/Globals.pm 11
lib/Mason/t/HTMLFilters.pm 11
lib/Mason/t/Interp.pm 22
lib/Mason/t/LvalueAttributes.pm 11
lib/Mason/t/Plugins.pm 1134
lib/Mason/t/Reload.pm 11
lib/Mason/t/Request.pm 11
lib/Mason/t/ResolveURI.pm 11
lib/Mason/t/Sanity.pm 11
lib/Mason/t/Sections.pm 11
lib/Mason/t/Skel.pm 11
lib/Mason/t/StaticSource.pm 11
lib/Mason/t/Syntax.pm 11
lib/Mason/t/Util.pm 11
lib/Mason.pm 11
69 files changed (This is a version diff) 115119
@@ -2,6 +2,11 @@ Revision history for Mason
 
 ** marks an incompatible change
 
+2.13  Jul 26, 2011
+
+* Improvements
+  - Add process_output, an easy way to modify all Mason output in a plugin
+
 2.12  Jul 3, 2011
 
 * Fixes
@@ -67,7 +67,6 @@ lib/Mason/Test/Plugins/Notify/Compilation.pm
 lib/Mason/Test/Plugins/Notify/Component.pm
 lib/Mason/Test/Plugins/Notify/Interp.pm
 lib/Mason/Test/Plugins/Notify/Request.pm
-lib/Mason/Tidy.pm
 lib/Mason/TieHandle.pm
 lib/Mason/Types.pm
 lib/Mason/Util.pm
@@ -72,6 +72,6 @@
          "web" : "https://github.com/jonswar/perl-mason"
       }
    },
-   "version" : "2.12"
+   "version" : "2.13"
 }
 
@@ -45,4 +45,4 @@ requires:
 resources:
   bugtracker: http://rt.cpan.org/NoAuth/Bugs.html?Dist=Mason
   repository: git://github.com/jonswar/perl-mason.git
-version: 2.12
+version: 2.13
@@ -42,7 +42,7 @@ my %WriteMakefileArgs = (
     'Scalar::Util' => '1.01',
     'Try::Tiny' => '0'
   },
-  'VERSION' => '2.12',
+  'VERSION' => '2.13',
   'test' => {
     'TESTS' => 't/*.t'
   }
@@ -1,6 +1,6 @@
 package Mason::App;
 BEGIN {
-  $Mason::App::VERSION = '2.12';
+  $Mason::App::VERSION = '2.13';
 }
 use Cwd qw(realpath);
 use File::Basename;
@@ -1,6 +1,6 @@
 package Mason::CodeCache;
 BEGIN {
-  $Mason::CodeCache::VERSION = '2.12';
+  $Mason::CodeCache::VERSION = '2.13';
 }
 use Devel::GlobalDestruction;
 use Mason::Moose;
@@ -4,7 +4,7 @@
 
 package Mason::Compilation;
 BEGIN {
-  $Mason::Compilation::VERSION = '2.12';
+  $Mason::Compilation::VERSION = '2.13';
 }
 use File::Basename qw(dirname);
 use Guard;
@@ -930,7 +930,7 @@ Moose, C<$m> and other required pieces. Empty by default.
 =item process_perl_code ($coderef)
 
 This method is called on each distinct piece of Perl code in the component.
-C<$coderef> is a reference to a string containing the code; the method can
+I<$coderef> is a reference to a string containing the code; the method can
 modify the code as desired. See L<Mason::Plugin::DollarDot> for a sample usage.
 
 =item unnamed_block_types ()
@@ -1,6 +1,6 @@
 package Mason::Component::ClassMeta;
 BEGIN {
-  $Mason::Component::ClassMeta::VERSION = '2.12';
+  $Mason::Component::ClassMeta::VERSION = '2.13';
 }
 use File::Basename;
 use Mason::Moose;
@@ -1,6 +1,6 @@
 package Mason::Component::Import;
 BEGIN {
-  $Mason::Component::Import::VERSION = '2.12';
+  $Mason::Component::Import::VERSION = '2.13';
 }
 use strict;
 use warnings;
@@ -1,6 +1,6 @@
 package Mason::Component::Moose;
 BEGIN {
-  $Mason::Component::Moose::VERSION = '2.12';
+  $Mason::Component::Moose::VERSION = '2.13';
 }
 use Moose                      ();
 use MooseX::HasDefaults::RW    ();
@@ -1,6 +1,6 @@
 package Mason::Component;
 BEGIN {
-  $Mason::Component::VERSION = '2.12';
+  $Mason::Component::VERSION = '2.13';
 }
 use Moose;    # no Mason::Moose - don't want StrictConstructor
 use MooseX::HasDefaults::RO;
@@ -1,6 +1,6 @@
 package Mason::DynamicFilter;
 BEGIN {
-  $Mason::DynamicFilter::VERSION = '2.12';
+  $Mason::DynamicFilter::VERSION = '2.13';
 }
 use Mason::Moose;
 
@@ -1,6 +1,6 @@
 package Mason::Exceptions;
 BEGIN {
-  $Mason::Exceptions::VERSION = '2.12';
+  $Mason::Exceptions::VERSION = '2.13';
 }
 use strict;
 use warnings;
@@ -1,6 +1,6 @@
 package Mason::Filters::Standard;
 BEGIN {
-  $Mason::Filters::Standard::VERSION = '2.12';
+  $Mason::Filters::Standard::VERSION = '2.13';
 }
 use Mason::DynamicFilter;
 use Mason::Util;
@@ -1,6 +1,6 @@
 package Mason::Interp;
 BEGIN {
-  $Mason::Interp::VERSION = '2.12';
+  $Mason::Interp::VERSION = '2.13';
 }
 use Carp;
 use Devel::GlobalDestruction;
@@ -1,6 +1,6 @@
 package Mason::Moose::Role;
 BEGIN {
-  $Mason::Moose::Role::VERSION = '2.12';
+  $Mason::Moose::Role::VERSION = '2.13';
 }
 use Moose::Role                ();
 use Method::Signatures::Simple ();
@@ -1,6 +1,6 @@
 package Mason::Moose;
 BEGIN {
-  $Mason::Moose::VERSION = '2.12';
+  $Mason::Moose::VERSION = '2.13';
 }
 use Moose                      ();
 use MooseX::HasDefaults::RO    ();
@@ -1,6 +1,6 @@
 package Mason::Plugin::Defer::Filters;
 BEGIN {
-  $Mason::Plugin::Defer::Filters::VERSION = '2.12';
+  $Mason::Plugin::Defer::Filters::VERSION = '2.13';
 }
 use Mason::PluginRole;
 
@@ -1,6 +1,6 @@
 package Mason::Plugin::Defer::Request;
 BEGIN {
-  $Mason::Plugin::Defer::Request::VERSION = '2.12';
+  $Mason::Plugin::Defer::Request::VERSION = '2.13';
 }
 use Mason::PluginRole;
 
@@ -1,6 +1,6 @@
 package Mason::Plugin::Defer;
 BEGIN {
-  $Mason::Plugin::Defer::VERSION = '2.12';
+  $Mason::Plugin::Defer::VERSION = '2.13';
 }
 use Moose;
 with 'Mason::Plugin';
@@ -1,6 +1,6 @@
 package Mason::Plugin::DollarDot::Compilation;
 BEGIN {
-  $Mason::Plugin::DollarDot::Compilation::VERSION = '2.12';
+  $Mason::Plugin::DollarDot::Compilation::VERSION = '2.13';
 }
 use Mason::PluginRole;
 
@@ -1,6 +1,6 @@
 package Mason::Plugin::DollarDot;
 BEGIN {
-  $Mason::Plugin::DollarDot::VERSION = '2.12';
+  $Mason::Plugin::DollarDot::VERSION = '2.13';
 }
 use Moose;
 with 'Mason::Plugin';
@@ -1,6 +1,6 @@
 package Mason::Plugin::LvalueAttributes::Interp;
 BEGIN {
-  $Mason::Plugin::LvalueAttributes::Interp::VERSION = '2.12';
+  $Mason::Plugin::LvalueAttributes::Interp::VERSION = '2.13';
 }
 use Mason::PluginRole;
 
@@ -1,6 +1,6 @@
 package Mason::Plugin::LvalueAttributes;
 BEGIN {
-  $Mason::Plugin::LvalueAttributes::VERSION = '2.12';
+  $Mason::Plugin::LvalueAttributes::VERSION = '2.13';
 }
 use Moose;
 with 'Mason::Plugin';
@@ -1,6 +1,6 @@
 package Mason::Plugin::TidyObjectFiles::Interp;
 BEGIN {
-  $Mason::Plugin::TidyObjectFiles::Interp::VERSION = '2.12';
+  $Mason::Plugin::TidyObjectFiles::Interp::VERSION = '2.13';
 }
 use Mason::PluginRole;
 use Perl::Tidy;
@@ -1,6 +1,6 @@
 package Mason::Plugin::TidyObjectFiles;
 BEGIN {
-  $Mason::Plugin::TidyObjectFiles::VERSION = '2.12';
+  $Mason::Plugin::TidyObjectFiles::VERSION = '2.13';
 }
 use Moose;
 with 'Mason::Plugin';
@@ -1,6 +1,6 @@
 package Mason::Plugin;
 BEGIN {
-  $Mason::Plugin::VERSION = '2.12';
+  $Mason::Plugin::VERSION = '2.13';
 }
 use Mason::PluginRole;
 use Mason::Util qw(can_load);
@@ -1,6 +1,6 @@
 package Mason::PluginBundle::Default;
 BEGIN {
-  $Mason::PluginBundle::Default::VERSION = '2.12';
+  $Mason::PluginBundle::Default::VERSION = '2.13';
 }
 use Mason::PluginRole;
 with 'Mason::PluginBundle';
@@ -1,6 +1,6 @@
 package Mason::PluginBundle;
 BEGIN {
-  $Mason::PluginBundle::VERSION = '2.12';
+  $Mason::PluginBundle::VERSION = '2.13';
 }
 use Mason::PluginRole;
 
@@ -1,6 +1,6 @@
 package Mason::PluginManager;
 BEGIN {
-  $Mason::PluginManager::VERSION = '2.12';
+  $Mason::PluginManager::VERSION = '2.13';
 }
 use Carp;
 use Log::Any qw($log);
@@ -1,6 +1,6 @@
 package Mason::PluginRole;
 BEGIN {
-  $Mason::PluginRole::VERSION = '2.12';
+  $Mason::PluginRole::VERSION = '2.13';
 }
 use Moose::Role                ();
 use Method::Signatures::Simple ();
@@ -1,6 +1,6 @@
 package Mason::Request;
 BEGIN {
-  $Mason::Request::VERSION = '2.12';
+  $Mason::Request::VERSION = '2.13';
 }
 use Carp;
 use File::Basename;
@@ -141,6 +141,7 @@ method filter () {
 
 method flush_buffer () {
     my $request_buffer = $self->_request_buffer;
+    $self->process_output($request_buffer);
     $self->out_method->( $$request_buffer, $self )
       if length $$request_buffer;
     $$request_buffer = '';
@@ -243,6 +244,10 @@ method match_request_path ($request_path) {
     $self->interp->match_request_path->( $self, $request_path );
 }
 
+method process_output ($outref) {
+                                            # No-op by default
+}
+
 method run () {
 
     # Get path and either hash or hashref of arguments
@@ -775,11 +780,17 @@ Given a top level I<$request_path>, return a corresponding component path or
 undef if none was found. Search includes dhandlers and index files. See
 L<Mason::Manual::RequestDispatch>.
 
+=item process_output ($outref)
+
+This method is called on the output buffer right before it is sent to its final
+destination. I<$outref> is a reference to the output string; the method can
+modify it as desired.
+
 =for html <a name="run" />
 
-=item run (request_path, args)
+=item run ($request_path, args)
 
-Runs the request with I<request_path> and I<args>, where the latter can be
+Runs the request with I<$request_path> and I<args>, where the latter can be
 either a hashref or a hash. This is generally called via << $interp->run >>.
 
 =for html <a name="with_tied_print" />
@@ -1,6 +1,6 @@
 package Mason::Result;
 BEGIN {
-  $Mason::Result::VERSION = '2.12';
+  $Mason::Result::VERSION = '2.13';
 }
 use Mason::Moose;
 
@@ -1,6 +1,6 @@
 package Mason::Test::Class;
 BEGIN {
-  $Mason::Test::Class::VERSION = '2.12';
+  $Mason::Test::Class::VERSION = '2.13';
 }
 use Carp;
 use File::Basename;
@@ -1,6 +1,6 @@
 package Mason::Test::Overrides::Component::StrictMoose;
 BEGIN {
-  $Mason::Test::Overrides::Component::StrictMoose::VERSION = '2.12';
+  $Mason::Test::Overrides::Component::StrictMoose::VERSION = '2.13';
 }
 use Moose::Exporter;
 use MooseX::StrictConstructor ();
@@ -1,6 +1,6 @@
 package Mason::Test::Plugins::Notify::Compilation;
 BEGIN {
-  $Mason::Test::Plugins::Notify::Compilation::VERSION = '2.12';
+  $Mason::Test::Plugins::Notify::Compilation::VERSION = '2.13';
 }
 use Mason::PluginRole;
 
@@ -1,6 +1,6 @@
 package Mason::Test::Plugins::Notify::Component;
 BEGIN {
-  $Mason::Test::Plugins::Notify::Component::VERSION = '2.12';
+  $Mason::Test::Plugins::Notify::Component::VERSION = '2.13';
 }
 use Mason::PluginRole;
 
@@ -1,6 +1,6 @@
 package Mason::Test::Plugins::Notify::Interp;
 BEGIN {
-  $Mason::Test::Plugins::Notify::Interp::VERSION = '2.12';
+  $Mason::Test::Plugins::Notify::Interp::VERSION = '2.13';
 }
 use Mason::PluginRole;
 
@@ -1,6 +1,6 @@
 package Mason::Test::Plugins::Notify::Request;
 BEGIN {
-  $Mason::Test::Plugins::Notify::Request::VERSION = '2.12';
+  $Mason::Test::Plugins::Notify::Request::VERSION = '2.13';
 }
 use Mason::PluginRole;
 
@@ -1,6 +1,6 @@
 package Mason::Test::Plugins::Notify;
 BEGIN {
-  $Mason::Test::Plugins::Notify::VERSION = '2.12';
+  $Mason::Test::Plugins::Notify::VERSION = '2.13';
 }
 use strict;
 use warnings;
@@ -1,34 +0,0 @@
-package Mason::Tidy;
-BEGIN {
-  $Mason::Tidy::VERSION = '2.12';
-}
-use File::Slurp;
-use IO::Scalar;
-use Mason::Tidy::Moose;
-use HTML::TreeBuilder;
-
-our $unique_string_count = 0;
-
-# Passed attributes
-has 'unique_string_prefix' => ( default => '__masontidy__' );
-
-#
-# BUILD
-#
-
-method tidy ($source) {
-    foreach my $subclass qw(PlainText IsolatedBlock InlinePerl RecursiveBlock) {
-        my $class = "Mason::Tidy::Compilation::$subclass";
-        Class::MOP::load_class($class);
-        my $c = $class->new( source => $source, tidy_object => $self );
-        $c->transform;
-        $source = $c->source;
-    }
-    return $source;
-}
-
-method unique_string () {
-    return join( "_", $self->unique_string_prefix, $unique_string_count++ );
-}
-
-1;
@@ -1,6 +1,6 @@
 package Mason::TieHandle;
 BEGIN {
-  $Mason::TieHandle::VERSION = '2.12';
+  $Mason::TieHandle::VERSION = '2.13';
 }
 use strict;
 use warnings;
@@ -1,6 +1,6 @@
 package Mason::Types;
 BEGIN {
-  $Mason::Types::VERSION = '2.12';
+  $Mason::Types::VERSION = '2.13';
 }
 use Moose::Util::TypeConstraints;
 use strict;
@@ -1,6 +1,6 @@
 package Mason::Util;
 BEGIN {
-  $Mason::Util::VERSION = '2.12';
+  $Mason::Util::VERSION = '2.13';
 }
 use Carp;
 use Class::MOP;
@@ -1,6 +1,6 @@
 package Mason::t::Autobase;
 BEGIN {
-  $Mason::t::Autobase::VERSION = '2.12';
+  $Mason::t::Autobase::VERSION = '2.13';
 }
 use Test::Class::Most parent => 'Mason::Test::Class';
 
@@ -1,6 +1,6 @@
 package Mason::t::Cache;
 BEGIN {
-  $Mason::t::Cache::VERSION = '2.12';
+  $Mason::t::Cache::VERSION = '2.13';
 }
 use Test::Class::Most parent => 'Mason::Test::Class';
 
@@ -1,6 +1,6 @@
 package Mason::t::CompCalls;
 BEGIN {
-  $Mason::t::CompCalls::VERSION = '2.12';
+  $Mason::t::CompCalls::VERSION = '2.13';
 }
 use Test::Class::Most parent => 'Mason::Test::Class';
 
@@ -1,6 +1,6 @@
 package Mason::t::Compilation;
 BEGIN {
-  $Mason::t::Compilation::VERSION = '2.12';
+  $Mason::t::Compilation::VERSION = '2.13';
 }
 use Test::Class::Most parent => 'Mason::Test::Class';
 
@@ -1,6 +1,6 @@
 package Mason::t::ComponentMeta;
 BEGIN {
-  $Mason::t::ComponentMeta::VERSION = '2.12';
+  $Mason::t::ComponentMeta::VERSION = '2.13';
 }
 use Test::Class::Most parent => 'Mason::Test::Class';
 
@@ -1,6 +1,6 @@
 package Mason::t::Defer;
 BEGIN {
-  $Mason::t::Defer::VERSION = '2.12';
+  $Mason::t::Defer::VERSION = '2.13';
 }
 use Test::More;
 use strict;
@@ -1,6 +1,6 @@
 package Mason::t::DollarDot;
 BEGIN {
-  $Mason::t::DollarDot::VERSION = '2.12';
+  $Mason::t::DollarDot::VERSION = '2.13';
 }
 use Test::Class::Most parent => 'Mason::Test::Class';
 
@@ -1,6 +1,6 @@
 package Mason::t::Errors;
 BEGIN {
-  $Mason::t::Errors::VERSION = '2.12';
+  $Mason::t::Errors::VERSION = '2.13';
 }
 use Test::Class::Most parent => 'Mason::Test::Class';
 
@@ -1,6 +1,6 @@
 package Mason::t::Filters;
 BEGIN {
-  $Mason::t::Filters::VERSION = '2.12';
+  $Mason::t::Filters::VERSION = '2.13';
 }
 use Test::Class::Most parent => 'Mason::Test::Class';
 
@@ -1,6 +1,6 @@
 package Mason::t::Globals;
 BEGIN {
-  $Mason::t::Globals::VERSION = '2.12';
+  $Mason::t::Globals::VERSION = '2.13';
 }
 use Test::Class::Most parent => 'Mason::Test::Class';
 
@@ -1,6 +1,6 @@
 package Mason::t::HTMLFilters;
 BEGIN {
-  $Mason::t::HTMLFilters::VERSION = '2.12';
+  $Mason::t::HTMLFilters::VERSION = '2.13';
 }
 use Test::Class::Most parent => 'Mason::Test::Class';
 
@@ -1,13 +1,13 @@
 package Mason::t::Interp;
 BEGIN {
-  $Mason::t::Interp::VERSION = '2.12';
+  $Mason::t::Interp::VERSION = '2.13';
 }
 use Test::Class::Most parent => 'Mason::Test::Class';
 use Capture::Tiny qw(capture);
 
 { package MyInterp;
 BEGIN {
-  $MyInterp::VERSION = '2.12';
+  $MyInterp::VERSION = '2.13';
 } use Moose; extends 'Mason::Interp' }
 
 sub test_base_interp_class : Tests {
@@ -1,6 +1,6 @@
 package Mason::t::LvalueAttributes;
 BEGIN {
-  $Mason::t::LvalueAttributes::VERSION = '2.12';
+  $Mason::t::LvalueAttributes::VERSION = '2.13';
 }
 use Test::Class::Most parent => 'Mason::Test::Class';
 
@@ -1,6 +1,6 @@
 package Mason::t::Plugins;
 BEGIN {
-  $Mason::t::Plugins::VERSION = '2.12';
+  $Mason::t::Plugins::VERSION = '2.13';
 }
 use Test::Class::Most parent => 'Mason::Test::Class';
 use Capture::Tiny qw(capture_merged);
@@ -41,28 +41,28 @@ sub test_strict_plugin : Tests {
 
 { package Mason::Test::Plugins::A;
 BEGIN {
-  $Mason::Test::Plugins::A::VERSION = '2.12';
+  $Mason::Test::Plugins::A::VERSION = '2.13';
 } use Moose; with 'Mason::Plugin'; }
 { package Mason::Plugin::B;
 BEGIN {
-  $Mason::Plugin::B::VERSION = '2.12';
+  $Mason::Plugin::B::VERSION = '2.13';
 }        use Moose; with 'Mason::Plugin'; }
 { package Mason::Plugin::C;
 BEGIN {
-  $Mason::Plugin::C::VERSION = '2.12';
+  $Mason::Plugin::C::VERSION = '2.13';
 }        use Moose; with 'Mason::Plugin'; }
 { package Mason::Plugin::D;
 BEGIN {
-  $Mason::Plugin::D::VERSION = '2.12';
+  $Mason::Plugin::D::VERSION = '2.13';
 }        use Moose; with 'Mason::Plugin'; }
 { package Mason::Plugin::E;
 BEGIN {
-  $Mason::Plugin::E::VERSION = '2.12';
+  $Mason::Plugin::E::VERSION = '2.13';
 }        use Moose; with 'Mason::Plugin'; }
 {
     package Mason::PluginBundle::F;
 BEGIN {
-  $Mason::PluginBundle::F::VERSION = '2.12';
+  $Mason::PluginBundle::F::VERSION = '2.13';
 }
     use Moose;
     with 'Mason::PluginBundle';
@@ -71,7 +71,7 @@ BEGIN {
 {
     package Mason::Test::PluginBundle::G;
 BEGIN {
-  $Mason::Test::PluginBundle::G::VERSION = '2.12';
+  $Mason::Test::PluginBundle::G::VERSION = '2.13';
 }
     use Moose;
     with 'Mason::PluginBundle';
@@ -80,7 +80,7 @@ BEGIN {
 {
     package Mason::Plugin::H;
 BEGIN {
-  $Mason::Plugin::H::VERSION = '2.12';
+  $Mason::Plugin::H::VERSION = '2.13';
 }
     use Moose;
     with 'Mason::Plugin';
@@ -89,7 +89,7 @@ BEGIN {
 {
     package Mason::PluginBundle::I;
 BEGIN {
-  $Mason::PluginBundle::I::VERSION = '2.12';
+  $Mason::PluginBundle::I::VERSION = '2.13';
 }
     use Moose;
     with 'Mason::PluginBundle';
@@ -102,7 +102,7 @@ BEGIN {
 {
     package Mason::PluginBundle::J;
 BEGIN {
-  $Mason::PluginBundle::J::VERSION = '2.12';
+  $Mason::PluginBundle::J::VERSION = '2.13';
 }
     use Moose;
     with 'Mason::PluginBundle';
@@ -140,4 +140,27 @@ sub test_plugin_specs : Tests {
     throws_ok { $test->( ['Y'] ) } qr/could not load 'Mason::Plugin::Y'/;
 }
 
+{ package Mason::Test::Plugins::Upper;
+BEGIN {
+  $Mason::Test::Plugins::Upper::VERSION = '2.13';
+} use Moose; with 'Mason::Plugin' }
+{
+    package Mason::Test::Plugins::Upper::Request;
+BEGIN {
+  $Mason::Test::Plugins::Upper::Request::VERSION = '2.13';
+}
+    use Mason::PluginRole;
+    after 'process_output' => sub {
+        my ( $self, $bufref ) = @_;
+        $$bufref = uc($$bufref);
+    };
+}
+
+sub test_process_output_plugin : Tests {
+    my $self = shift;
+
+    $self->setup_interp( plugins => ['+Mason::Test::Plugins::Upper'] );
+    $self->test_comp( src => 'Hello', expect => 'HELLO' );
+}
+
 1;
@@ -1,6 +1,6 @@
 package Mason::t::Reload;
 BEGIN {
-  $Mason::t::Reload::VERSION = '2.12';
+  $Mason::t::Reload::VERSION = '2.13';
 }
 use Test::Class::Most parent => 'Mason::Test::Class';
 
@@ -1,6 +1,6 @@
 package Mason::t::Request;
 BEGIN {
-  $Mason::t::Request::VERSION = '2.12';
+  $Mason::t::Request::VERSION = '2.13';
 }
 use Test::Class::Most parent => 'Mason::Test::Class';
 use Log::Any::Test;
@@ -1,6 +1,6 @@
 package Mason::t::ResolveURI;
 BEGIN {
-  $Mason::t::ResolveURI::VERSION = '2.12';
+  $Mason::t::ResolveURI::VERSION = '2.13';
 }
 use Test::Class::Most parent => 'Mason::Test::Class';
 
@@ -1,6 +1,6 @@
 package Mason::t::Sanity;
 BEGIN {
-  $Mason::t::Sanity::VERSION = '2.12';
+  $Mason::t::Sanity::VERSION = '2.13';
 }
 use Test::Class::Most parent => 'Mason::Test::Class';
 
@@ -1,6 +1,6 @@
 package Mason::t::Sections;
 BEGIN {
-  $Mason::t::Sections::VERSION = '2.12';
+  $Mason::t::Sections::VERSION = '2.13';
 }
 use Test::Class::Most parent => 'Mason::Test::Class';
 
@@ -1,6 +1,6 @@
 package Mason::t::Skel;
 BEGIN {
-  $Mason::t::Skel::VERSION = '2.12';
+  $Mason::t::Skel::VERSION = '2.13';
 }
 use Test::Class::Most parent => 'Mason::Test::Class';
 
@@ -1,6 +1,6 @@
 package Mason::t::StaticSource;
 BEGIN {
-  $Mason::t::StaticSource::VERSION = '2.12';
+  $Mason::t::StaticSource::VERSION = '2.13';
 }
 use Test::Class::Most parent => 'Mason::Test::Class';
 use Mason::Util qw(write_file touch_file);
@@ -1,6 +1,6 @@
 package Mason::t::Syntax;
 BEGIN {
-  $Mason::t::Syntax::VERSION = '2.12';
+  $Mason::t::Syntax::VERSION = '2.13';
 }
 use Test::Class::Most parent => 'Mason::Test::Class';
 
@@ -1,6 +1,6 @@
 package Mason::t::Util;
 BEGIN {
-  $Mason::t::Util::VERSION = '2.12';
+  $Mason::t::Util::VERSION = '2.13';
 }
 use Test::Class::Most parent => 'Mason::Test::Class';
 use Mason::Util qw(combine_similar_paths);
@@ -1,6 +1,6 @@
 package Mason;
 BEGIN {
-  $Mason::VERSION = '2.12';
+  $Mason::VERSION = '2.13';
 }
 use Mason::Interp;
 use Mason::PluginManager;